package com.ruoyi.order.controller;

import com.alibaba.fastjson2.JSON;
import com.ruoyi.order.utils.DingCallbackCrypto;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import shade.com.alibaba.fastjson2.JSONObject;

import java.util.Map;

@RestController
public class CallbackController {

//    private final Logger bizLogger = LoggerFactory.getLogger(getClass());
//    @PostMapping("/dingtalk/callback")
//    public Map<String, String> callBack(
//            @RequestParam(value = "msg_signature", required = false) String msg_signature,
//            @RequestParam(value = "timestamp", required = false) String timeStamp,
//            @RequestParam(value = "nonce", required = false) String nonce,
//            @RequestBody(required = false) JSONObject json) {
//        try {
//            System.out.println("进入回调函数");
//            DingCallbackCrypto callbackCrypto = new DingCallbackCrypto(
//                    "PvOanRrwvD8VtRBr5ROuUikQ0awD1njNJSEN",
//                    "lob7KHvokYNKcX2DAFxogHwV9J4EGdQ2XugZAMnS13z",
//                    "dingi1egsdxwi6g6yhgy"
//            );
//
//            String encryptMsg = json.getString("encrypt");
//            String decryptMsg = callbackCrypto.getDecryptMsg(msg_signature, timeStamp, nonce, encryptMsg);
//
//            // 3. 反序列化回调事件json数据
//            JSONObject eventJson = JSON.parseObject(decryptMsg);
//
//            String eventType = eventJson.getString("EventType");
//
//            /// 处理不同类型的事件
//            switch (eventType) {
//                case "check_url":
//                    bizLogger.info("测试回调url的正确性");
//                    break;
//
//                case "bpms_task_change":  // 审批任务状态变更
//                    handleTaskChange(eventJson);
//                    break;
//
//                case "bpms_instance_change":  // 审批实例状态变更
//                    handleInstanceChange(eventJson);
//                    break;
//
//                default:
//                    bizLogger.info("发生事件: {}", eventType);
//            }
//
//            // 5. 返回success的加密数据
//            Map<String, String> successMap = callbackCrypto.getEncryptedMap("success");
//            return successMap;
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return null;
//
//    }
    // 处理审批任务变更（审批人操作）
//    private void handleTaskChange(JSONObject eventJson) {
//        System.out.println("审批人操作>>>>"+eventJson.toString());
//        JSONObject eventContent = eventJson;
//        String processInstanceId = eventContent.getString("processInstanceId");
//        String taskId = eventContent.getString("taskId");
//        String result = eventContent.getString("result"); // 审批结果：agree/refuse
//
//        if ("agree".equals(result)) {
//            bizLogger.info("审批通过 [实例ID: {}, 任务ID: {}]", processInstanceId, taskId);
//            // TODO: 处理审批通过业务逻辑
//        } else if ("refuse".equals(result)) {
//            bizLogger.info("审批拒绝 [实例ID: {}, 任务ID: {}]", processInstanceId, taskId);
//            // TODO: 处理审批拒绝业务逻辑
//        }
//
//        bizLogger.info("完整审批任务事件内容: {}", eventContent.toJSONString());
//    }
//
//    // 处理审批实例变更（整体流程）
//    private void handleInstanceChange(JSONObject eventJson) {
//        JSONObject eventContent = eventJson;
//        System.out.println("整体流程>>>>"+eventJson.toString());
//        String processInstanceId = eventContent.getString("processInstanceId");
//        String type = eventContent.getString("type"); // 事件类型：finish/terminate
//        String result = eventContent.getString("result"); // 最终结果：agree/refuse
//
//        if ("finish".equals(type)) {
//            if ("agree".equals(result)) {
//                bizLogger.info("审批流程完成-通过 [实例ID: {}]", processInstanceId);
//            } else if ("refuse".equals(result)) {
//                bizLogger.info("审批流程完成-拒绝 [实例ID: {}]", processInstanceId);
//            }
//        } else if ("terminate".equals(type)) {
//            bizLogger.info("审批流程终止 [实例ID: {}]", processInstanceId);
//        }
//
//        bizLogger.info("完整审批实例事件内容: {}", eventContent.toJSONString());
//    }

}